package com.example.javabasic.thread.classtwo.singleton.demo3;

import java.util.ArrayList;
import java.util.List;
//主题,操作的具体内容
public class Subject {
    //观察者列表
    private List<Observer> observers = new ArrayList<>();
    //状态码
    private int state;
    //获取状态
    public int getState(){
        return this.state;
    }
    //修改状态
    public void setState(int state){
        //状态如果发生改变则不通知
        if(this.state == state){
            return ;
        }
        this.state = state;
        //通知所有观察者
        notifyAllObserver();
    }
    // 添加观察者
    public void attach(Observer observer){
        observers.add(observer);
    }
    //通知所有观察者
    private void notifyAllObserver(){
        //循环通知
        observers.stream().forEach(Observer::notifySubject);
    }
}
